package cn.tedu.thread;

public class Test1 {
    public static void main(String[] args) {
        //创建目标对象
        Myticket2 a=new Myticket2();
        //启动线程
        Thread t1=new Thread(a,"窗口1");
        Thread t2=new Thread(a,"窗口2");
        Thread t3=new Thread(a,"窗口3");
        Thread t4=new Thread(a,"窗口4");
        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}
//实现接口,实现多线程编程
//--需求：4个窗口，卖100张票
class Myticket2 implements Runnable{
    int tickets=100;//定义变量，记录票数
    //开始卖票业务
    @Override

   synchronized public void run() {
        //一直卖票
        while (true){//死循环，一定要配合出口！！
            //
            if(tickets>0){
                try {
                    //让程序休眠一下，来测试多线程编程中，数据到底有没有隐患
                    //问题：超卖，卖出了0和-1的票
                    //问题：重卖，把同一张票卖了好几个人
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+"==="+tickets--);
            }else{
                break;
            }
        }
    }

}
